﻿@model GaclibWebPage.Models.IndexPageModel

@{
    ViewBag.Title = "GacLib - Home";
}

<tr>
    <td align="left" valign="top" colspan="6">
        <p>
            GacUI is a GPU accelerated user interface library for C++ programming language. It provides similar features as WPF, but some features is limited by C++, such as dependency properties. Here are main features:
        </p>
    </td>
</tr>
<tr>
    <td align="left" valign="top" colspan="4">
        <ul>
            <li>
                <strong>Cross Platform Supporting</strong>
                <p>Currently GacUI can run on <strong>Windows, OSX and some Linux distributions</strong>. If you download source code from the <a href="@Url.Action("Download")#Demos">DOWNLOAD</a> page, you will only get the GacUI version that runs on Windows. In order to run on other operating systems, you should navigate to the following urls. In the future, codes for all platforms will be merged together.</p>
                <p>For <strong>OSX</strong>: <a href="https://github.com/darkfall/Gaclib_OSX" target="_blank">https://github.com/darkfall/Gaclib_OSX</a> </p>
                <p>For <strong>Linux</strong>: <a href="https://github.com/milizhang/xgac" target="_blank">https://github.com/milizhang/xgac</a> </p>
                <p>GacUI for Windows, OSX and Linux shared most of the code, and in most of the cases, you don't need to rely on the non-shared part of the GacUI, except you want to get benefit from a specific platform.</p>
                <p>GacUI for OSX and Linux are under development, but most of the importing parts has already been tested by the authors. If you look into the OSX version, you can see there is an "ios" branch, which enable GacUI to run on iOS. But this is only a concept implementation.</p>
            </li>
            <li>
                <strong>Rich control library</strong>
                <p>GacUI provides all common controls, such as buttons, text boxes, list views and menus. Text boxes in GacUI support customizable colorizers so that programmers can build code editor very easily.</p>
                <p>We plan to provide Ribbon library and dockable panel manager in the future.</p>
            </li>
            <li>
                <strong>GPU acceleration</strong>
                <p>Currently GacUI provides two rendering engines: GDI and Direct2D. GacUI supports GDI to run itself on some operating system that doesn't have Direct2D, like Windows XP. GacUI also allows users to access Direct2D or GDI objects directly at runtime to provide more complicated rendering.</p>
            </li>
            <li>
                <strong>XML resource supports</strong>
                <p>This feature is similar to XAML in WPF, which containing loading windows and controls from an XML resource, data binding, view model supports, customizable control template, etc..</p>
            </li>
            <li>
                <strong>Reflection and scripting</strong>
                <p>GacUI provides libraries which enable you to make your C++ classes reflectable, so that they can be accessed using the Workflow script and the XML resource.</p>
            </li>
            <li>
                <strong>MVC concept supports</strong>
                <p>GacUI is built with the MVC pattern, from the control framework to specific controls. MVC decouples controls from styles. And for controls in the toolstrip control package, like menu, menubar and toolbar, MVC decouples controls from command states.</p>
                <p>For some repeated items containers like list view, tree view or combo box, GacUI provides specific MVC supports to decouple data source, item style and item arranger.</p>
                <p>This features is important for displaying large data set. For example, if an item is displayed as a button, the list view control will only creates buttons for visible items. Invisible items doesn't really create buttons for displaying them. When user scrolls, data source, item style and item arranger will cooperate together to display correct items in correct positions.</p>
                <p>If the data is too large to store in the memory, this mechanism enables programmers to load necessary data only from files. The application can use only a little memory to show such large data smoothly. MVC supporting makes programmers very easy to do that.</p>
                <p>MVC supports also included in the <b>XML resource supports</b>.</p>
            </li>
            <li>
                <strong>Crossing platforms</strong>
                <p>Part of this library is compilable under <strong>Linux</strong>. See <a href="@Url.Action("GettingStart")">the Getting Started section</a> for details.</p>
            </li>
        </ul>
    </td>
    <td align="left" valign="top" colspan="2">
        <table class="GuideTable" cellpadding="0" cellspacing="0">
            <!--Latest Update-->
            <tr class="GuideTableHeader">
                <td>
                    Latest Updates: (@Model.LatestUpdateDemo.UpdateDate.ToString("yyyy/MM/dd"))
                </td>
            </tr>
            <tr class="GuideTableBody">
                <td align="left" valign="top">
                @{
                    string url = Url.Action("ShowDemo", "DemoPage", new { demoId = @Model.LatestUpdateDemo.Name });
                    <strong>@Model.LatestUpdateDemo.Name</strong>
                    <p><a href="@url"><img src="@Url.Content(string.Format("~/Content/Demos/Demos.{0}.jpg", Model.LatestUpdateDemo.Name))" /></a></p>
                    <p>@Model.LatestUpdateDemo.Description</p>
                    <a class="ReadMoreLink" href="@url">Read more...</a>
                }
                </td>
            </tr>
            <tr class="GuideTableSeparator">
                <td>&nbsp;</td>
            </tr>
            <!--Tasks-->
            <tr class="GuideTableHeader">
                <td>
                    I want to:
                </td>
            </tr>
            <tr class="GuideTableBody">
                <td align="left" valign="top">
                    <strong>Get start</strong>
                    <p>Here are instructions for how to download GacUI source code and build a hello world application.</p>
                    <a class="ReadMoreLink" href="@Url.Action("GettingStart")">Read more...</a>
                </td>
            </tr>
            <tr class="GuideTableBody">
                <td align="left" valign="top">
                    <strong>Learn from demos</strong>
                    <p>Learning important GacUI features from Demos is much easier than reading document.</p>
                    <a class="ReadMoreLink" href="@Url.Action("Demos")">Read more...</a>
                </td>
            </tr>
            <tr class="GuideTableBody">
                <td align="left" valign="top">
                    <strong>Download the source code</strong>
                    <p>Both latest release and latest source code are available. Programmers can choose which one to use.</p>
                    <p>
                    <a href="http://gac.codeplex.com/" target="_blank">http://gac.codeplex.com/</a><br />
                    <a href="https://github.com/vczh/gac/" target="_blank">https://github.com/vczh/gac/</a>
                    </p>
                    <a class="ReadMoreLink" href="@Url.Action("Download")">Read more...</a>
                </td>
            </tr>
            <tr class="GuideTableBody">
                <td align="left" valign="top">
                    <strong>Read document</strong>
                    <p>Online document for almost all classes in GacUI library. Offline document is included in GacUI releases.</p>
                    <a class="ReadMoreLink" href="@Url.Action("ShowDocument", "DocumentPage", new { uniqueId = "reference_gacui" })">Read more...</a>
                </td>
            </tr>
            <tr class="GuideTableBody">
                <td align="left" valign="top">
                    <strong>Get help or provide advices</strong>
                    <p>Contact the developer to get help or provide advices.</p>
                    <a class="ReadMoreLink" href="@Url.Action("Contact")">Read more...</a>
                </td>
            </tr>
        </table>
    </td>
</tr>
